Typical software installation and maintenance involves the import and integration of new software releases including multiple inter-dependent software packages into an existing system. To facilitate the integration of a software release, it is important for a developer or administrator to understand and identify the dependencies among the multiple software packages and the potential impact the software packages of the new release will have on the underlying system. When a new software release is introduced, determining the underlying software dependencies is important to detect and identify potential incompatibilities with existing Application Programming Interfaces (APIs) or an Application Binary Interfaces (ABIs) (collectively referred to as “API/ABI breakages”) across release cycles.
Conventional package managers are configured to determine software dependencies and incompatibilities relating to new software releases by reviewing the source code of the software release maintained in files in a directory. However, the review of the source code is time intensive and inefficient.
Furthermore, conventional systems utilize a relational database model or plain text files to store software package dependency information. In such systems, the system is forced to make recursive calls in the relational database model or plain text files in order to retrieve information about the package dependencies and identify changes in package dependencies across multiple software releases.
Moreover, typical software dependency monitoring is conducted at the package level (e.g., for each package release). In this regard, conventional methods fail to provide an efficient means for the retrieval of information relating to software package dependencies to enable a developer to understand the impact of software changes to an existing system.